iT邦幫忙

2022 iThome 鐵人賽

DAY 4
0
自我挑戰組

養爬蟲的人學爬蟲系列 第 4

[Day 4] Python 條件判斷、迴圈、其他

  • 分享至 

  • xImage
  •  

閒聊
昨天進行了基本常用的語法後,今天要繼續來學習python中的其他用法。
在python中,區分程式碼區塊(block)是使用縮排(indentation),這點跟習慣用C語言的比較不一樣。
縮排會用到的長度為4個空白鍵,或者是使用tab(這點跟Java是一樣的)。

比較運算子
在介紹條件判斷前,先介紹比較運算子是什麼。
在python中是用來進行物件的比較大小。

  • 等於 ==
  • 大於 >
  • 小於 <
  • 大於等於 =>
  • 小於等於 <=
  • 不等於 !=

條件判斷
也就是常聽到的ifif-else,不過在python中,還會出現if-elif-else

  • if
    用法:在if句尾加上
if範例

price = 120
if price <200 : #因為目前的price小於200元,所以會執行if這一行程式
    print('錢不夠購買')
  • if-else
    用法:在if和else句尾都要加上:
if-else範例

student = 69
if student <= 70 :
    print('可以加簽')
else:
    print('人數已滿')

上面的程式會output出可以加簽,因為目前學生人數69人小於70。
若我們把程式改成

if-else範例

student = 80
if student <= 70 :
    print('可以加簽')
else:
    print('人數已滿')

則會output出人數已滿

  • if-elif-else
    有多個條件需要判斷的時候,就可以使用if-elif-else
    當第一個條件(if)不成立時,會進入到第二個條件(elif),若第二個條件成立,即執行。若不成立,則執行第三個(else)。
    https://ithelp.ithome.com.tw/upload/images/20220916/20145359sLASbfBqRH.jpg
if-elif-else範例

temperature = 36.2
if temperature <=37 :
    print('體溫正常')
elif 37.5 <= temperature <38 :
    print('輕微發燒')
else :
    print('發燒')

邏輯運算子
了解條件判斷後,就可以來認識邏輯運算子了。
總共有3個

  • and 且
    當想連結的兩個條件判斷皆為True時(條件皆須成立),就可以使用and
studnet = True
teaching assistant = True
if student and teaching assistant :
    print('你有管理成績的權限')
else :
    print('你沒有權限進入')
  • or 或
    只要有一條件為True時(其中一個條件成立),就可以使用or
member = True
manager = True
if member or manager :
    print('你有50%的折扣優惠')
else :
    print('你有90%的折扣優惠')
  • not 不是
    not 的用法很像國文課學過的 「雙重否定表肯定」
    1.條件如果是True,加上not後,會變成False
    2.條件如果是False,加上not後,會變成True
member = False #會員
if not member : #不是會員
    print('你無法有會員折扣')

所以這裡會output你無法有會員折扣

迴圈For-loop
定義:讓指定的物件在條件符合的情況下 重複執行。
類別:

  • 單層loop
    用法:在for-loop後方要加上 :
for 物件 in 目標物 : #目標物為可疊代(Iterable)或是序列(sequence)
    #要執行的物件

在語法中, in後面的目標物就是loop要讀取的目標。這個迴圈,就會從目標物中,讀取每次接收到的物件(依序排列)。

for-loop範例

for letter in "Happy" :
    print(letter)
#output
H
a
p
p
y

目標物也可以放入list(串列)

dinner = ['pizza','salad','cake']
for i in dinner :
    print(i)
#output
pizza
salad
cake
  • 巢狀loop
    簡單來說:就是迴圈中包著迴圈。
    他會先從最外部的迴圈開始執行,得到第一個元素後,執行內部的迴圈。等到內部的迴圈跑完了,才會回外部迴圈拿取第二個元素,依此類推,直到目標物都讀取完畢。
for i in range(1,10) : #i的數字1到9
    for j in range(1,10) :  #j的數字1到9
        if j == 9 :
            print('\t', i*j) #j等於9的時候換行
        else :
            print("\t", i*j, end = '') #j < 9時,不換行

執行結果
https://ithelp.ithome.com.tw/upload/images/20220917/20145359VRvuUgogmf.png

  • while-loop
    while-loop比較適合運用在當程式碼需要執行到某一個特殊狀況才會停下來時,也就是遇到「無法預知迴圈數」的時候。
    特性:在跑迴圈前,會先檢查判斷式,若結果為True才會執行迴圈,否則結束。
while-loop範例
i = 1
while i <= 10 : #while先判斷i是否<=10
    print(i,end = '')
    i = i+1
#output
12345678910

迴圈結束
分為了兩種:

  • break:直接中斷迴圈的執行。
for i in "Hello world." :
    if i == "o" :
        break
    print(i) #因為印出i這個指令在break後面,所以就不會執行到了
#output
H
e
l
l
  • continue:不會結束迴圈,而是跳過continue後面的內容,繼續執行下一次的迴圈。
for i in "Hello world." :
    if i == "o" :
        continue
    print(i) #印出i是在contunue後面,所以只有o這個字母被跳過而已
#output
H
e
l
l
 
w
r
l
d
.

結語
今天遇到最讓我困擾的地方應該是邏輯運算子的not那邊,他的邏輯我個人覺得比較繞一點(比起其他兩個),讓我想要怎麼寫想了一陣子。相較迴圈,複習起來花了比較多的時間.../images/emoticon/emoticon06.gif
也趁機好好閱讀了迴圈的差別跟用法,覺得好像又學到不少東西了!

明天
【Day 5】Python函數(function)

參考資料
[Python教學]搞懂5個Python迴圈常見用法https://www.learncodewithmike.com/2019/12/python.html
Python 初學第四講 — 迴圈 https://medium.com/ccclub/ccclub-python-for-beginners-tutorial-4990a5757aa6


上一篇
【Day 3】Python基本語法(常見資料型態)
下一篇
【Day 5】Python 函數(Function)
系列文
養爬蟲的人學爬蟲30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言